import { SyncHook } from "tapable";

// 初始化同步钩子, 定义参数数量
const hook = new SyncHook<[arg1: string, arg2: string, arg3: string]>([
  "arg1",
  "arg2",
  "arg3",
]);

// 注册事件
hook.tap("flag1", (arg1, arg2, arg3) => {
  console.log("flag1:", arg1, arg2, arg3);
});

hook.tap("flag2", (arg1, arg2, arg3) => {
  console.log("flag2:", arg1, arg2, arg3);
});

// 调用事件并传递执行参数
hook.call("19Qingfeng", "wang", "haoyu");
// // 打印结果
// flag1: 19Qingfeng wang haoyu
// flag2: 19Qingfeng wang haoyu

// 作者：19组清风
// 链接：https://juejin.cn/post/7040982789650382855
// 来源：稀土掘金
// 著作权归作者所有。商业转载请联系作者获得授权，非商业转载请注明出处。

//* syncHook
// 对多个参数进行副作用操作(无法直接共享参数)
